# 1 为什么要把发送的数据进行编码: 在网络中，数据是以`二进制数据类型bytes`的形式进行传递的
    # 所以:发送的数据时: 需要把字符串(str)转成二进制(byte类型);
    # 接受数据时: 需要把二进制(byte类型)转成字符串(str)
# 2 所谓的编码和解码: 是站在人的角度来说的, 不同的字符串数据str,人类易于识别, 而网络世界需要0101这样的字符流数据
    # 编码: str->byte 解码:byte->str

# 3 b"xxx"格式只支持xxx是ASCII数据

# 举个栗子:
# 1 把'黑马程序员'转成二进制
# 2 把'itheima' 转成二进制

if __name__ == '__main__':
    print('---------------1 把\'黑马程序员\'转成二进制  中文-------------')
    # 1 把'黑马程序员'转成二进制  中文
    s1 = '黑马程序员'
    bs1 = s1.encode(encoding='utf-8')   # 编码 str->byte
    print('bs1-->', bs1, type(bs1))
    mys1 = bs1.decode(encoding='utf-8') # 解码 byte->str
    print('mys1-->', mys1)

    print('--------------2 把\'itheima\' 转成二进制 英文--------------')
    # 2 把'itheima' 转成二进制 英文
    s2 = 'itheima'
    bs2 = s2.encode(encoding='utf-8')   # 编码 str->byte
    print('bs2-->', bs2, type(bs2))
    mys2 = bs2.decode(encoding='utf-8') # 解码 byte->str
    print('mys2-->', mys2)

    print('--------------3 编码更简单的写法--------------')
    # 3 编码更简单的写法
    s3 = b'itheima' # 加上b后相当于执行 'itheima'.encode(encoding='utf-8')
    print('s3-->', s3)

    # s4 = b'黑马程序员'     # SyntaxError: bytes can only contain ASCII literal characters.
    # print('s4-->', s4)   #  b方式只能对ASCII数据有效, 对中文不支持
    pass
